iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Modern Web

Django新手指南系列 第 15

45度傾斜藝術 測試上傳資料 江狗(Django) 鐵人Day15

  • 分享至 

  • xImage
  •  
  • 使用Postman模擬對伺服器傳送資料:



(484很像)
簡單介紹一下會用到的東西:
Postman 是一款 API 開發工具,測試和開發API時很好用的工具(其實是不想刻前端(?)),在官網下載APP註冊完帳號後就能使用囉!

登入後依照下方六步驟指示操作:

  1. 使用POST類型進行傳送

  2. URL填入127.0.0.1:8000/classlist/

  3. 選擇Body

  4. 選擇raw --> JSON類型

  5. 輸入以下格式:

{
    "Grade":"三年級",
    "Class":"乙班",
    "Gender":"False",
    "Number":"25",
    "Name":"王曉明"
}

  1. 按下Send傳送
  • CSRF 驗證失敗問題

當我們按下Send後發現怎麼報錯了?
因為我們沒有對CSRF做處理就直接對伺服器傳送資料:

原因:

  • 當客戶端(前端)瀏覽器發出跨域請求給伺服器
  • 伺服器收到請求後將請求的數據回傳給客戶端(前端)瀏覽器
  • 客戶端(前端)瀏覽器根據傳輸協議發現是由不同網域傳回的數據(不安全)就把數據丟棄
  • 導致CSRF驗證失敗。

解決方法:

方法一

增加CSRF_Exempt註釋來繞過CSRF驗證,此方法雖然不安全但能讓程式順利運行。

#引入csrf_exempt參數
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt添加在def classlist(request):上方

方法二

將CSRF驗證註解掉:

<Settings.py>

MIDDLEWARE = [
    #將這行註解掉
    'django.middleware.csrf.CsrfViewMiddleware',
]

修改後我們再試一次:

可以看到Postman上能看到輸出結果了就表示資料以上傳上去囉!

下回我們來看看資料庫是不是新增了一筆資料吧! 大家掰掰~

參考資料:
麥可傑克森


上一篇
南無阿彌陀螺 (?) 設定資料庫(下) 江狗(Django) 鐵人Day14
下一篇
主機板安裝在顯卡上 admin後台顯示資料 江狗(Django) 鐵人Day16
系列文
Django新手指南30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言